package com.utils.pay;

import java.util.ArrayList;
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;

import com.wf.course.model.bill.Bill;

public class BillUtil {
	
	
	 //字符串转list
    public static List<Bill> fmtString(String resultStr){
    	
    	List<Bill> list = new ArrayList<Bill>();
    	
    	if(!"".equals(resultStr) && resultStr!=""){
    		resultStr = resultStr.replace("`", "");
    		//n条记录
    		String[] bills= resultStr.split("0.60%");
    		//遍历，保存对账单
    		for(int i=0;i<bills.length;i++){
    		//	list.add(bills[i]);
    			String[] bstr = bills[i].split(",");
    				String[] bl = new String[bstr.length]  ;  
    				for(int k=0;k<bstr.length;k++){
        				bl[k] = bstr[k];
    				}
    				if(bl.length==23){
    				
        				 Bill bill= new Bill();
        				 bill.setTradetime(bl[0]); //交易时间
        				 bill.setGhid(bl[1]);//公众号id
        				 bill.setMchid(bl[2]);//商户号
        				 bill.setSubmch(bl[3]);//子商户号
        				 bill.setDeviceid(bl[4]) ; //设备号
        				 bill.setWxorder(bl[5]) ; //微信订单号
        				 bill.setBzorder(bl[6]); //商户订单号
        				 bill.setOpenid(bl[7]) ; //用户标识
        				 bill.setTradetype(bl[8]) ; //交易类型
        				 bill.setTradestatus(bl[9]); //交易状态
        				 bill.setBank(bl[10]) ; //付款银行
        				 bill.setCurrency(bl[11]) ; //货币种类
        				 bill.setTotalmoney(bl[12]) ; //总金额
        				 bill.setRedpacketmoney(bl[13]) ; //代金券或立减优惠金额
        				 bill.setWxrefund(bl[14]) ; //微信退款单号
        				 bill.setBzrefund(bl[15]) ; //商户退款单号
        				 bill.setRefundmoney(bl[16]); //退款金额
        				 bill.setRedpacketrefund(bl[17]) ; //代金券或立减优惠退款金额
        				 bill.setRefundtype(bl[18]) ; //退款类型
        				 bill.setRefundstatus(bl[19]) ; //退款状态
        				 bill.setProductname(bl[20]) ; //商品名称
        				 bill.setBzdatapacket(bl[21]) ; //商户数据包
        				 bill.setFee(bl[22]) ; //手续费
        				 bill.setRate("0.60%") ; //费率
        				 
        				 list.add(bill);
    					}
    			 
    		}
    	 
    	}
    	return list;
    } 
    
    
    public  static String getBills(String yesterday) {
        SortedMap<Object,Object> parameters =new TreeMap<Object,Object>();
        parameters.put("appid",ConfigUtil.APPID); //公众账号ID
        parameters.put("mch_id",ConfigUtil.MCH_ID); //商户号
//     parameters.put("device_info", "");//微信支付分配的终端设备号，填写此字段，只下载该设备号 的对账单
        parameters.put("nonce_str",PayCommonUtil.CreateNoncestr()); //随机字符串
        parameters.put("bill_date",yesterday);//下载对账单的日期，格式：20140603，日期不可为当天。
        //bill_type:ALL返回当日所有订单信息,默认值SUCCESS返回当日成功支付的订单。REFUND，返回当日退款订单
        parameters.put("bill_type","ALL");
        String sign =PayCommonUtil.createSign("utf-8", parameters);
        parameters.put("sign", sign);
        String reuqestXml =PayCommonUtil.getRequestXml(parameters);
        
        String result=CommonUtil.httpsRequest(ConfigUtil.DOWNLOAD_BILL_URL, "POST",reuqestXml);
        if(result.startsWith("<xml>")){//查询日期为当天时，错误信息提示日期无效
            System.out.println(result);
            System.out.println("无订单");
        }else {  
           String tradeMsg =  result.substring(result.indexOf("`"));
           String tradeInfo =  tradeMsg.substring(0,tradeMsg.indexOf("总"));
           String tradeTotalMsg =tradeMsg.substring(tradeMsg.indexOf("总"));
           String tradeTotalInfo =tradeTotalMsg.substring(tradeTotalMsg.indexOf("`"));
         
           System.out.println(tradeInfo);
          List<Bill> billList =  fmtString(tradeInfo);
//          billService.saveBill(billList);
          
       }
		return result;
    }

}
